/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package utilities;

import Comparators.UsuarioNomeComparator;
import Filters.UsuarioFilter;
import beans.Usuario;
import net.sourceforge.floggy.persistence.FloggyException;
import net.sourceforge.floggy.persistence.ObjectSet;

/**
 *
 * @author Pedro Henrique
 */
public class Login {

    private static FloggyUtility fu = new FloggyUtility();
    private static ObjectSet os = null;

    /**
     * 
     * @param u Usuário que está tentando autenticar-se no sistema.
     * @return true para logado, false para não logado.
     */
    public static boolean autenticar(Usuario u) {
        os = fu.findFilterAndComparator(u, new UsuarioFilter(u.getLogin(), 'L'), new UsuarioNomeComparator());
        if (os.size() == 0) {
            return false;
        }
        Usuario userAux = new Usuario();
        try {
            userAux = (Usuario) os.get(0);
        } catch (FloggyException ex) {
            ex.printStackTrace();
            System.out.println("Não foi possível converter para usuário!");
        }
        return userAux.getSenha().equals(u.getSenha());
    }

    /**
     * 
     * @param u Usuário que será cadastrado ou alterado.
     * @return Caso retorne true, ou usuário está sendo cadastrado ou esta alterando o login.
     * retornará false se estiver alterando um login para um já existente ou esta cadastrando um que já existe.
     */
    public static boolean procuraLogin(Usuario u) {
        os = fu.findFilterAndComparator(u, new UsuarioFilter(u.getLogin(), 'L'), new UsuarioNomeComparator());
        if (os.size() == 0) {
            return true;
        }
        Usuario userAux = new Usuario();
        try {
            userAux = (Usuario) os.get(0);
        } catch (FloggyException ex) {
            ex.printStackTrace();
            System.out.println("Não foi possível converter para usuário!");
        }
        if (u.getId() == userAux.getId()) {
            return true;
        } else {
            return false;
        }
    }
}
